Рекурсивная архитектура логики
Чтобы создать сложные цифровые системы, мы должны сначала определить грамматику их языка. В любой булевой алгебре $(S, +, \cdot, ', 0, 1)$ мы определяем булевы выражения над множеством переменных $x_1, \dots, x_n$ посредством процесса структурной индукции:
1. Каждая константа $s \in S$ является булевым выражением.
2. Каждая переменная $x_1, \dots, x_n$ является булевым выражением.
Если $X_1$ и $X_2$ уже являются булевыми выражениями, то следующие также являются допустимыми выражениями:
$(X_1), \quad X_1', \quad X_1 + X_2, \quad X_1 \cdot X_2$
Приоритет и эффективность
В отсутствие скобок мы придерживаемся строгой иерархии, чтобы избежать неоднозначности: Конъюнкция ($\\land$) всегда имеет приоритет перед Дизъюнкция ($\\lor$). Более того, для оптимизации аппаратного дизайна мы используем $n$-входные элементы. Вместо последовательного соединения нескольких двухвходовых элементов мы представляем $a_1 \vee a_2 \vee \dots \vee a_n$ как единую логическую единицу, уменьшая задержку распространения сигнала и упрощая топологию схемы.
Принцип структурного отображения
Каждое алгебраическое выражение — это чертеж физической схемы. Рассмотрим построение для $(x_1 \wedge (\neg x_2 \vee x_3)) \vee x_2$:
- Внутренний слой: Сначала мы выделяем $(\neg x_2 \vee x_3)$, используя элемент НЕ и элемент ИЛИ.
- Средний слой: Результат подается в элемент И вместе со сигналом от $x_1$.
- Внешний слой: Наконец, выход элемента И и исходная линия $x_2$ встречаются на выходном элементе ИЛИ.